package aOrganizar;

import java.util.Date;

import excepciones.ComprarException;
import excepciones.ReservarException;

/**
 * 
 * @author Braghini Marcos
 * 
 */
public class Asiento {

	private String clase;
	private String numeroDeAsiento;
	private Double precio;
	private String ubicacion;
	private Vuelo vuelo;
	private Usuario usuario;
	private String estado;

	public Asiento(String clase, String numeroDeAsiento, Double precio,
			String ubicacion, Vuelo vuelo, String estado, Usuario usuario) {

		this.clase = clase;
		this.estado = estado;
		this.numeroDeAsiento = numeroDeAsiento;
		this.precio = precio;
		this.ubicacion = ubicacion;
		this.vuelo = vuelo;
		this.usuario = usuario;
		this.estado = estado;

	}

	/**
	 * Corrobora si es un asiento VIP.
	 * 
	 * @return
	 */
	public boolean esSuperOferta() {
		return (clase.equalsIgnoreCase("p") && precio < 8000 || clase
				.equalsIgnoreCase("e") && precio < 4000);
	}

	/**
	 * @throws ComprarException
	 * 
	 * 
	 */
	public void comprar() throws ComprarException {
		vuelo.comprar(this, usuario);
	}

	public Date salida() {
		return vuelo.getSalida();
	}

	public Date llegada() {
		return vuelo.getLlegada();
	}

	//Metodo para reservar cada asiento, usa el metodo reservar del vuelo al que pertenece el asiento.
	public void reservar() throws ReservarException
	{
		this.vuelo.reservar(this,this.usuario);		
	}
	
	
	//
	// Setters
	//

	public void setPrecio(Double precio) {
		this.precio = precio;
	}

	public void setClase(String clase) {
		this.clase = clase;
	}

	public void setNumeroDeAsiento(String numeroDeAsiento) {
		this.numeroDeAsiento = numeroDeAsiento;
	}

	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public void setVuelo(Vuelo vuelo) {
		this.vuelo = vuelo;
	}

	//
	// Getters
	//

	public Vuelo getVuelo() {
		return vuelo;
	}

	public Double getPrecio() {
		Double recargoImpuestos = vuelo.getRecargoImpuestosAerolinea();
		return usuario.calculaPrecio(precio * recargoImpuestos);

	}

	public String getClase() {
		return clase;
	}

	public String getUbicacion() {
		return ubicacion;
	}

	public String getEstado() {
		return estado;
	}

	public String getNumeroDeAsiento() {
		return numeroDeAsiento;
	}

	public Integer popularidadVuelo() {
		return vuelo.getVendidos();
	}

}